package main

import "fmt"

func main() {
	var a, b int32 = 10, 20
	fmt.Printf("1. a = %d, b = %d, &a = %p, &b = %p\n", a, b, &a, &b)
	swap(a, b)
	fmt.Printf("2. a = %d, b = %d, &a = %p, &b = %p\n", a, b, &a, &b)
	swap2(&a, &b)
	fmt.Printf("3. a = %d, b = %d\n", a, b)
}

func swap(a, b int32) {
	fmt.Printf("in swap a = %d, b = %d, &a = %p, &b = %p\n", a, b, &a, &b)
	c := a
	a = b
	b = c
	return
}

func swap2(a, b *int32) {
	fmt.Printf("in swap2 a = %d, b = %d, &a = %p, &b = %p\n", *a, *b, a, b)
	c := *a
	*a = *b
	*b = c
	return
}